常用工具类 |
您所在的位置:网站首页 › java arrayfill › 常用工具类 |
asListsort排序和parallelSort并行排序binarySearchcopyOfdeepEquals深度比较、deepHashCode生成hashcode、deepToString深度打印equals比较filltoStringtoStreamparallelPrefixparallelSetAllsetAll 所有的方法都是在下面的类中进行测试的: publicclassArraysTest{ String[]array=newString[]{"a","c","2","1","b"}; Integer[] ints =newInteger[]{5,1,4,3,2}; ...} asList这个方法可以把数组转换成List,List提供了很多的操作方法,更便于使用。 @Testpublicvoidtest1(){ List lists = Arrays.asList(array);} sort排序和parallelSort并行排序sort比较常用了,根据元素按照自然排序规则排序,也可以设置排序元素的起始位置。 @Testpublicvoidsort(){ /* Arrays.sort(array); for(String str : array){ System.out.println(str); }*/ Arrays.sort(array,2,5); System.out.println(Arrays.deepToString(array));//[a, c, 1, 2, b]}parallelSort则采用并行的排序算法排序.但是我自己测试,可能数据量太小,速度上并没有明显的变化。 binarySearch查找目标元素所在的位置,注意需要先进行排序。 @TestpublicvoidbinarySearch(){ //binarySearch需要保证是排好序的 System.out.println(Arrays.binarySearch(array,"c"));//-6 Arrays.sort(array); System.out.println(Arrays.binarySearch(array,"c"));//4} copyOf拷贝数组,第一种用法,如果目标长度不够,会使用0进行补位。第二种用法,支持拷贝目标起始位置到结束为止的数组。 @TestpublicvoidcopyOf(){ //如果位数不够,需要补位 Integer[] result = Arrays.copyOf(ints,10); for(inti : result){ System.out.println(i); } System.out.println("----------------------------------------->"); //如果位数够,就取最小的数组 result = Arrays.copyOf(ints,3); for(inti : result){ System.out.println(i); } System.out.println("----------------------------------------->"); // result = Arrays.copyOfRange(ints,2,4); for(inti : result){ System.out.println(i); }} deepEquals深度比较、deepHashCode生成hashcode、deepToString深度打印这几个方法基本都是采用递归的写法使用。 @TestpublicvoiddeepTest(){ String[] array2 =newString[]{"a","c","2","1","b"}; System.out.println(Arrays.deepEquals(array,array2));//深度比较两个数组是否相同 System.out.println(Arrays.deepHashCode(array)); System.out.println(Arrays.deepHashCode(array2));//如果两个数组deepEquals,那么他们的hashcode一定相同 //格式化输出数组 System.out.println(Arrays.deepToString(array));} equals比较对比两个数组是否相等 @Testpublicvoidequals(){ String[] array2 =newString[]{"a","c","2","1","b"}; //1 对比引用是否相同 //2 对比是否存在null //3 对比长度是否相同 //4 挨个元素对比 System.out.println(Arrays.equals(array,array2));} fill基于目标元素填充数组 @Testpublicvoidfill(){ Arrays.fill(array,"test"); System.out.println(Arrays.deepToString(array));//[test, test, test, test, test]} toString打印数组元素 @Testpublicvoidstring(){ System.out.println(Arrays.toString(array));//[a, c, 2, 1, b]} toStream把数组转换成stream,然后可以使用java8的stream特性了。 @Testpublic void toStream(){ Arrays.stream(array).forEach(s->System.out.println(s));} parallelPrefix这个有点像spark的reduceByKey,即根据传入的方法一次计算: @TestpublicvoidparallelPrefix(){ Arrays.parallelPrefix(ints,(x,y)->(x+y)); System.out.println(Arrays.deepToString(ints));//[5, 6, 10, 13, 15]} parallelSetAll这个方法相当于stream.map会挨个元素遍历执行方法 @TestpublicvoidparallelSetAll(){ Arrays.parallelSetAll(ints,x->x*x); System.out.println(Arrays.toString(ints));//[0, 1, 4, 9, 16]} setAll这个方法与上面类似,只不过不是并行的 @Testpublic void setAll(){ Arrays.setAll(ints,x->x*2); System.out.println(Arrays.toString(ints));} |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |